Transmission of moving pictures in real-time is employed in several applications like e.g. video conferencing, net meetings, TV broadcasting and video telephony.
However, representing moving pictures requires bulk information as digital video typically is described by representing each pixel in a picture with 8 bits (1 Byte). Such uncompressed video data results in large bit volumes, and can not be transferred over conventional communication networks and transmission lines in real time due to limited bandwidth.
Thus, enabling real time video transmission requires a large extent of data compression. Data compression may, however, compromise with picture quality. Therefore, great efforts have been made to develop compression techniques allowing real time transmission of high quality video over bandwidth limited data connections. In video compression systems, the main goal is to represent the video information with as little capacity as possible. Capacity is defined with bits, either as a constant value or as bits/time unit. In both cases, the main goal is to reduce the number of bits.
The most common video coding method is described in the MPEG* and H.26* standards. The video data undergo four main processes before transmission, namely prediction, transformation, quantization and entropy coding. The prediction process significantly reduces the amount of bits required for each picture in a video sequence to be transferred. It takes advantage of the similarity of parts of the sequence with other parts of the sequence. Since the predictor part is known to both encoder and decoder, only the difference has to be transferred. This difference typically requires much less capacity for its representation. The prediction is mainly based on picture content from previously reconstructed pictures where the location of the content is defined by motion vectors. The prediction process is typically performed on square block sizes (e.g. 16×16 pixels). Note that in some cases, predictions of pixels based on the adjacent pixels in the same picture rather than pixels of preceding pictures are used. This is referred to as intra prediction, as opposed to inter prediction.
The residual represented as a block of data (e.g. 4×4 or 8×8 pixels) still contains internal correlation. A well-known method of taking advantage of this is to perform a two dimensional block transform. The ITU recommendation H.264 uses a 4×4 or 8×8 integer type transform. This transforms n×n pixels into n—n transform coefficients and they can usually be represented by fewer bits than the pixel representation. Transform of an n×n array of pixels with internal correlation will probability result in an n×n block of transform coefficients with much fewer non-zero values than the original n×n pixel block.
Direct representation of the transform coefficients is still too costly for many applications. A quantization process is carried out for a further reduction of the data representation. Hence the transform coefficients undergo quantization. The possible value range of the transform coefficients is divided into value intervals each limited by an uppermost and lowermost decision value and assigned a fixed quantization value. The transform coefficients are then quantified to the quantization value associated with the intervals within which the respective coefficients reside. Coefficients being lower than the lowest decision value are quantified to zeros. It should be mentioned that this quantization process results in that the reconstructed video sequence is somewhat different compared to the uncompressed sequence.
Summarized, a digital video picture is exposed to the following steps:
Divide the picture into square blocks of pixels, for instance 16×16 or 8×8 pixels. This is done for luminance information as well as for chrominance information.
Produce a prediction for the pixels in the block. This may be based on pixels in an already coded/decoded picture (called inter prediction) or on already coded/decoded pixels in the same picture (intra prediction).
Form a difference between the pixels to be coded and the predicted pixels. This is often referred to as a residual.
Perform a two dimensional transformation of the residual resulting in a representation as transform coefficients.
Perform a quantization of the transform coefficients. This is the major tool for controlling the bit production and reconstructed picture quality.
Establish a scanning of the two dimensional transform coefficient data into a one dimensional set of data.
Perform lossless entropy coding of the quantized transform coefficients.
The above steps are listed in a natural order for the encoder. The decoder will to some extent perform the operations in the opposite order and do “inverse” operations as inverse transform instead of transform and de-quantization instead of quantization.